package com.ruoyi.project.file.detail.domain;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;

/**
 * 文件记录对象 file_detail
 * 
 * @author zhangqidi
 * @date 2025-08-06
 */
public class FileDetail extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 文件id */
    private String id;

    /** 文件访问地址 */
    @Excel(name = "文件访问地址")
    private String url;

    /** 文件大小，单位字节 */
    @Excel(name = "文件大小，单位字节")
    private Long size;

    /** 文件名称 */
    @Excel(name = "文件名称")
    private String filename;

    /** 原始文件名 */
    @Excel(name = "原始文件名")
    private String originalFilename;

    /** 基础存储路径 */
    @Excel(name = "基础存储路径")
    private String basePath;

    /** 存储路径 */
    @Excel(name = "存储路径")
    private String path;

    /** 文件扩展名 */
    @Excel(name = "文件扩展名")
    private String ext;

    /** MIME类型 */
    @Excel(name = "MIME类型")
    private String contentType;

    /** 存储平台 */
    @Excel(name = "存储平台")
    private String platform;

    /** 缩略图访问路径 */
    @Excel(name = "缩略图访问路径")
    private String thUrl;

    /** 缩略图名称 */
    @Excel(name = "缩略图名称")
    private String thFilename;

    /** 缩略图大小，单位字节 */
    @Excel(name = "缩略图大小，单位字节")
    private Long thSize;

    /** 缩略图MIME类型 */
    @Excel(name = "缩略图MIME类型")
    private String thContentType;

    /** 文件所属对象id */
    @Excel(name = "文件所属对象id")
    private String objectId;

    /** 文件所属对象类型，例如用户头像，评价图片 */
    @Excel(name = "文件所属对象类型，例如用户头像，评价图片")
    private String objectType;

    /** 文件元数据 */
    @Excel(name = "文件元数据")
    private String metadata;

    /** 文件用户元数据 */
    @Excel(name = "文件用户元数据")
    private String userMetadata;

    /** 缩略图元数据 */
    @Excel(name = "缩略图元数据")
    private String thMetadata;

    /** 缩略图用户元数据 */
    @Excel(name = "缩略图用户元数据")
    private String thUserMetadata;

    /** 附加属性 */
    @Excel(name = "附加属性")
    private String attr;

    /** 文件ACL */
    @Excel(name = "文件ACL")
    private String fileAcl;

    /** 缩略图文件ACL */
    @Excel(name = "缩略图文件ACL")
    private String thFileAcl;

    /** 哈希信息 */
    @Excel(name = "哈希信息")
    private String hashInfo;

    /** 上传ID，仅在手动分片上传时使用 */
    @Excel(name = "上传ID，仅在手动分片上传时使用")
    private String uploadId;

    /** 上传状态，仅在手动分片上传时使用，1：初始化完成，2：上传完成 */
    @Excel(name = "上传状态，仅在手动分片上传时使用，1：初始化完成，2：上传完成")
    private Long uploadStatus;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }

    public void setUrl(String url) 
    {
        this.url = url;
    }

    public String getUrl() 
    {
        return url;
    }

    public void setSize(Long size) 
    {
        this.size = size;
    }

    public Long getSize() 
    {
        return size;
    }

    public void setFilename(String filename) 
    {
        this.filename = filename;
    }

    public String getFilename() 
    {
        return filename;
    }

    public void setOriginalFilename(String originalFilename) 
    {
        this.originalFilename = originalFilename;
    }

    public String getOriginalFilename() 
    {
        return originalFilename;
    }

    public void setBasePath(String basePath) 
    {
        this.basePath = basePath;
    }

    public String getBasePath() 
    {
        return basePath;
    }

    public void setPath(String path) 
    {
        this.path = path;
    }

    public String getPath() 
    {
        return path;
    }

    public void setExt(String ext) 
    {
        this.ext = ext;
    }

    public String getExt() 
    {
        return ext;
    }

    public void setContentType(String contentType) 
    {
        this.contentType = contentType;
    }

    public String getContentType() 
    {
        return contentType;
    }

    public void setPlatform(String platform) 
    {
        this.platform = platform;
    }

    public String getPlatform() 
    {
        return platform;
    }

    public void setThUrl(String thUrl) 
    {
        this.thUrl = thUrl;
    }

    public String getThUrl() 
    {
        return thUrl;
    }

    public void setThFilename(String thFilename) 
    {
        this.thFilename = thFilename;
    }

    public String getThFilename() 
    {
        return thFilename;
    }

    public void setThSize(Long thSize) 
    {
        this.thSize = thSize;
    }

    public Long getThSize() 
    {
        return thSize;
    }

    public void setThContentType(String thContentType) 
    {
        this.thContentType = thContentType;
    }

    public String getThContentType() 
    {
        return thContentType;
    }

    public void setObjectId(String objectId) 
    {
        this.objectId = objectId;
    }

    public String getObjectId() 
    {
        return objectId;
    }

    public void setObjectType(String objectType) 
    {
        this.objectType = objectType;
    }

    public String getObjectType() 
    {
        return objectType;
    }

    public void setMetadata(String metadata) 
    {
        this.metadata = metadata;
    }

    public String getMetadata() 
    {
        return metadata;
    }

    public void setUserMetadata(String userMetadata) 
    {
        this.userMetadata = userMetadata;
    }

    public String getUserMetadata() 
    {
        return userMetadata;
    }

    public void setThMetadata(String thMetadata) 
    {
        this.thMetadata = thMetadata;
    }

    public String getThMetadata() 
    {
        return thMetadata;
    }

    public void setThUserMetadata(String thUserMetadata) 
    {
        this.thUserMetadata = thUserMetadata;
    }

    public String getThUserMetadata() 
    {
        return thUserMetadata;
    }

    public void setAttr(String attr) 
    {
        this.attr = attr;
    }

    public String getAttr() 
    {
        return attr;
    }

    public void setFileAcl(String fileAcl) 
    {
        this.fileAcl = fileAcl;
    }

    public String getFileAcl() 
    {
        return fileAcl;
    }

    public void setThFileAcl(String thFileAcl) 
    {
        this.thFileAcl = thFileAcl;
    }

    public String getThFileAcl() 
    {
        return thFileAcl;
    }

    public void setHashInfo(String hashInfo) 
    {
        this.hashInfo = hashInfo;
    }

    public String getHashInfo() 
    {
        return hashInfo;
    }

    public void setUploadId(String uploadId) 
    {
        this.uploadId = uploadId;
    }

    public String getUploadId() 
    {
        return uploadId;
    }

    public void setUploadStatus(Long uploadStatus) 
    {
        this.uploadStatus = uploadStatus;
    }

    public Long getUploadStatus() 
    {
        return uploadStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("url", getUrl())
            .append("size", getSize())
            .append("filename", getFilename())
            .append("originalFilename", getOriginalFilename())
            .append("basePath", getBasePath())
            .append("path", getPath())
            .append("ext", getExt())
            .append("contentType", getContentType())
            .append("platform", getPlatform())
            .append("thUrl", getThUrl())
            .append("thFilename", getThFilename())
            .append("thSize", getThSize())
            .append("thContentType", getThContentType())
            .append("objectId", getObjectId())
            .append("objectType", getObjectType())
            .append("metadata", getMetadata())
            .append("userMetadata", getUserMetadata())
            .append("thMetadata", getThMetadata())
            .append("thUserMetadata", getThUserMetadata())
            .append("attr", getAttr())
            .append("fileAcl", getFileAcl())
            .append("thFileAcl", getThFileAcl())
            .append("hashInfo", getHashInfo())
            .append("uploadId", getUploadId())
            .append("uploadStatus", getUploadStatus())
            .append("createTime", getCreateTime())
            .toString();
    }
}
